def mem_to_hex_txt(input_mem_path, output_txt_path, per_line=10):
    """
    读取mem文件，按每行指定数量的十六进制数据输出到txt文件

    参数:
        input_mem_path: 输入mem文件路径
        output_txt_path: 输出txt文件路径
        per_line: 每行显示的数据个数，默认10个
    """
    try:
        # 读取mem文件，处理所有十六进制数据
        with open(input_mem_path, 'r', encoding='utf-8') as mem_file:
            # 读取所有内容，按空白字符（空格、换行、制表符等）分割，过滤空字符串
            hex_data = [line.strip() for line in mem_file.read().split() if line.strip()]

        # 检查是否读取到数据
        if not hex_data:
            print("警告：mem文件中未找到有效数据！")
            return

        # 写入txt文件，每行per_line个数据，用空格分隔
        with open(output_txt_path, 'w', encoding='utf-8') as txt_file:
            for i in range(0, len(hex_data), per_line):
                # 截取当前行的数据（从i到i+per_line）
                line_data = hex_data[i:i+per_line]
                # 用空格连接数据，写入文件并换行
                txt_file.write(' '.join(line_data) + '\n')

        print(f"转换完成！")
        print(f"输入文件：{input_mem_path}")
        print(f"输出文件：{output_txt_path}")
        print(f"总共处理数据：{len(hex_data)} 个")
        print(f"每行显示数据：{per_line} 个")

    except FileNotFoundError:
        print(f"错误：找不到文件 {input_mem_path}")
    except Exception as e:
        print(f"错误：转换过程中出现异常 - {str(e)}")


# ------------------- 配置参数 -------------------
INPUT_MEM_FILE = "deconv_kernel_output.mem"    # 输入mem文件路径（可修改为实际路径）
OUTPUT_TXT_FILE = "output.txt"  # 输出txt文件路径（可修改为实际路径）
DATA_PER_LINE = 10              # 每行显示的数据个数（可调整）
# ------------------------------------------------

# 执行转换
if __name__ == "__main__":
    mem_to_hex_txt(INPUT_MEM_FILE, OUTPUT_TXT_FILE, DATA_PER_LINE)